#include "msgClient.h"

MsgClient::MsgClient(key_t servKey0, key_t cliKey0)
{
	servFlag = false;
	cliFlag = false;
	servKey = servKey0;
	cliKey = cliKey0;
	msgMessage.msgKey = getpid();
	start();
}

MsgClient::~MsgClient()
{
	end();
}

int MsgClient::start()
{
	if(servFlag == false)
	{
		servQid = msgget(servKey, 0666);
		if (servQid == -1) 
		{
			return(-1);
		}
		servFlag = true;
	}
	if(cliFlag == false)
	{
		cliQid = msgget(cliKey, 0666);
		if (cliQid == -1) 
		{
			return(-1);
		}
		cliFlag = true;
	}
	return(0);
}

void MsgClient::end()
{
	servFlag = false;
	cliFlag = false;
}

int MsgClient::sendMessToServer()
{
	if(servFlag == true)
	{
    	if (msgsnd(servQid, (void *)&msgMessage, MSG_BUF_LEN, 0) == -1) 
    	    return(-1);
    	return(0);
	} else {
		return (-1);
	}
}

int MsgClient::readRespFromServer()
{
	if(cliFlag == true)
	{
    	if (msgrcv(cliQid, (void *)&msgMessage, MSG_BUF_LEN, msgMessage.msgKey, 0) == -1) 
    	    return(-1);
	    return(0);
	} else 
		return (-1);
}
